import matplotlib.pyplot as plt
import pandas as pd
##########################################################5-8
# df = pd.read_excel('产品销售表.xlsx', sheet_name=['第1分店', '第2分店', '第3分店'])
# df_list = []
# df_list.append(df['第1分店'])
# df_list.append(df['第2分店'])
# df_list.append(df['第3分店'])
# width = 0.3
# for i in range(len(df_list)):
#     df_temp = df_list[i]
#     df_temp.dropna(axis=0, subset=['数量'], inplace=True)
#     df_temp.drop_duplicates(inplace=True)
#     df_temp = df_temp.groupby('季度').agg('sum')
#     x = df_temp.index
#     height=df_temp['销售额（万元）']
#     plt.bar(x+width*i, height, width)
# plt.rcParams['font.sans-serif'] = 'SimHei'
# plt.ylabel('销售额/万元')
# plt.legend(['第1分店', '第2分店', '第3分店'])
# plt.xticks([1, 2, 3, 4], ['第1分店', '第2分店', '第3分店', '第4分店'])
# plt.title('每个季度不同分店销售额柱状图')
# plt.show()
######################################################################5-9
# df = pd.read_excel('图书各地区销售表.xlsx', index_col=0)
# data = df.agg('sum')
# plt.pie(data, labels=df.columns, autopct='%.2f%%')
# plt.rcParams['font.sans-serif'] = 'SimHei'
# plt.title('各地需图书销售额饼状图')
# plt.show()
################################################################
# import matplotlib.pyplot as plt
# import pandas as pd
#
# # 1. 提前设置中文显示（必须在绘图前执行）
# plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码
# plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
#
# # 2. 读取Excel数据，index_col=0将第一列（序号）设为索引
# df = pd.read_excel('学生各学期成绩表.xlsx', index_col=0)
#
# # 3. 计算各科目的平均分（结果为4个值：语文、数学、英语、综合）
# data = df.agg('mean', numeric_only=True)
# print(data)
# # 4. 绘制饼图：标签改为科目名（data的索引），匹配数据长度
# plt.pie(data, labels=data.index, autopct='%.2f%%')  # data.index是['语文','数学','英语','综合']
#
# # 5. 设置正确的标题
# plt.title('各科平均成绩占比饼状图')
#
# # 6. 显示图表
# plt.show()
##############################################################################5-10
# df = pd.read_excel('营销和产品销量表.xlsx', index_col=0)
# plt.rcParams['font.sans-serif'] = 'SimHei'
# plt.rcParams['figure.figsize'] = (8, 5)
# x = df['展现量']
# y1 = df['点击量']
# plt.subplot(2, 2, 1)
# plt.scatter(x, y1)
# plt.legend(('展现量与点击量',), loc='lower right')
# y2 = df['订单金额']
# plt.subplot(2, 2, 2)
# plt.scatter(x, y2, s=20, c='r', marker='*')
# plt.legend(('展现量与订单金额',), loc='lower right')
# y3 = df['加购数']
# plt.subplot(2, 2, 3)
# plt.scatter(x, y3, s=25, c='g', marker='d')
# plt.legend(('展现量与加购数',), loc='lower right')
# y4 = df['下单新客数']
# plt.subplot(2, 2, 4)
# plt.scatter(x, y4, s=30, c='b', marker='+')
# plt.legend(('展现量与下单新客数',), loc='lower right')
# plt.show()
######################################################################################5-11
df = pd.read_excel('超市销售信息表.xlsx')
plt.boxplot(df['购物体验评分'], positions=[1])
plt.boxplot(df['购物体验评分'], positions=[2], notch=True, whis=0.5, patch_artist=True, boxprops={'facecolor':'r'}, showmeans=True)
Q1 = df['购物体验评分'].describe()['75%']
Q2 = df['购物体验评分'].describe()['25%']
up_limit = Q1+(Q1-Q2)*0.5
low_limit = Q2 - (Q1-Q2)*0.5
val = df['购物体验评分'][(df['购物体验评分'] > up_limit)| (df['购物体验评分'] < low_limit)]
print(df['购物体验评分'].describe())
print(val)
plt.show()